#pragma once

#include "DataHolder.h"
#include <iostream>

using namespace std;

class Data : public DataHolder {
public:
	
	~Data();
	
	static Data* createBoolean(bool value = false);
	static Data* createInt(int value = 0);
	static Data* createFloat(float value = 0.0f);
	static Data* createString(string value = "");
	static Data* createVariableName(string value);
	
	bool getBooleanValue();
	int getIntValue();
	float getFloatValue();
	string getStringValue();
	string getVariableName();
	
	Data* getCopy();
	
	static int getNrOfInstances() { return s_nrOfInstances; }
    
private:
	
	bool m_booleanValue;
	int m_intValue;
	float m_floatValue;
	string m_stringValue;
	
	Data();
	
	static int s_nrOfInstances;
	
};